LINK(2) | 리눅스 프로그래머 매뉴얼 | LINK(2) |
이름¶
link - 파일에 대한 새로운 이름을 만든다.
사용법¶
#include <unistd.h>
int link(const char *oldpath, const char *newpath);
설명¶
link는 존재하는 파일에 새로운 연결(하드 링크로 알려진)을 만든다.
만일 newpath가 존재한다면 그것은 덮어 씌우지 않는다. 새로운 이름은 어떠한 작동에서든지 예전 것과 동일하게 사용된다; 두 개의 이름은 같은 파일(같은 허가권과 소유권)을 참조하며 어떤 것이 `원본'이라고 말하기 어렵다.
반환값¶
성공시, 0을 반환한다. 에러시, -1을 반환하며, errno는 적당한 값으로 설정된다.
에러¶
- EXDEV
- oldpath 과 newpath가 같은 파일 시스템에 있지 않다.
- EPERM
- oldpath 과 newpath을 포함하는 파일 시스템은 하드 연결의 생성을 지원하지 않는다.
- EFAULT
- oldpath 또는 newpath 가 접근할 수 없는 주소 공간을 가리키고 있다."
- EACCES
- newpath를 포함하는 디렉토리에 대한 쓰기 접근이 프로세스의 유효 uid를 허용하지 않거나 oldpath 또는 newpath디렉토리 중 하나가 탐색(실행) 허가권을 가지고 있지 않다.
- ENAMETOOLONG
- oldpath 또는 newpath가 너무 길다.
- ENOENT
-
oldpath 또는 newpath에 있는 디렉토리 요소가 존재하지 않거나 심볼릭 링크가 있다.
- ENOTDIR
- oldpath 또는 newpath에서 디렉토리로 사용된 요소가 사실은 디렉토리가 아니다.
- ENOMEM
- 이용할수 있는 커널 메모리가 충분하지 않다.
- EROFS
- 파일이 읽기-전용 파일 시스템에 있다.
- EEXIST
- newpath가 이미 존재한다.
- EMLINK
- oldpath를 참조하는 파일이 연결할 수 있는 최대 수이다.
- ELOOP
- 너무 많은 심볼릭 링크를 oldpath 또는 newpath에서 만났다.
- ENOSPC
- 파일을 포함하는 장치에 새 디렉토리를 위한 공간이 더이상 없다.
- EPERM
- oldpath가 디렉토리이다.
- EIO
- I/O에러가 발생했다.
주의¶
link에 의해 만들어진 하드 연결은 서로 다른 파일시스템 사이로 연결할 수 없다. 파일시스템 사이를 연결 할려면 symlink 를 사용해라.
호환¶
SVr4, SVID, POSIX, BSD 4.3, X/OPEN. SVr4 문서는 ENOLINK 그리고 EMULTIHOP 에러 조건을 추가적으로 기술했다; POSIX.1는 ELOOP를 문서화 하지 않았다. X/OPEN 은 EFAULT, ENOMEM 또는 EIO를 문서화 하지 않았다.
버그¶
NFS 파일 시스템에서, NFS 서버가 연결 생성을 하고 그렇게 했다는 것을 말하기 전에 죽을 경우 반환 값은 틀릴 수 있다. 연결이 생성됐는지 발견하려면 stat(2)를 사용해라.
관련 항목¶
역자¶
정강훈 <skyeyes@soback.kornet.net>, 2000년 5월 28일
1997년 12월 10일 | Linux 2.0.30 |